package cn.amos.dao.persistence;

import cn.amos.dao.entity.UserEntity;
import cn.amos.dao.search.UserSearch;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author DaoyuanWang
 */
@Repository
public interface UserMapper {

    /**
     * 用户注册
     *
     * @param userEntity 用户实体
     */
    void insert(UserEntity userEntity);

    /**
     * 修改用户信息
     *
     * @param userEntity 用户实体
     */
    void update(UserEntity userEntity);

    /**
     * 根据用户id获得用户信息
     *
     * @param userId 用户id
     * @return 用户实体
     */
    UserEntity selectById(Integer userId);

    /**
     * 根据查询条件获得用户信息
     *
     * @param userSearch 查询对象
     * @return 用户实体
     */
    UserEntity selectByExample(@Param("search") UserSearch userSearch);

    /**
     * 根据查询条件获得多条用户信息
     *
     * @param userSearch 查询对象
     * @return 用户实体列表
     */
    List<UserEntity> selectListByExample(@Param("search") UserSearch userSearch);

    /**
     * 根据用户id删除用户
     *
     * @param userId 用户id
     */
    void delete(Integer userId);

    /**
     * 根据条件删除用户信息
     *
     * @param userSearch 查询对象
     */
    void deleteByExample(@Param("search") UserSearch userSearch);
}
